package com.gxa.p2p.mapper;

import com.gxa.p2p.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

/**
 * @author Bei
 * @date 2021/10/26 12:52
 */
public interface MarkMapper {

    /**
     * 修改数据
     * @param mark
     */
    public void update(Mark mark);



    /**
     * //杨述波  接口4  新增借款数据上传
     * @param mark
     */
    public Long addMark(Mark mark);




    /**
     * //杨述波 接口6 9  11 新标维护页面全查寻/借款审核页面全查/
     * @param markName  标名
     * @param debtor   借款方
     * @param phone    借款人电话
     * @param state    借款标状态
     * @param mortgageType  借款担保类型  房抵 车抵
     * @param page   页码
     * @param size   页面大小
     * @return
     */
    public List<Map> findAllLikeByPageXW(@Param("markName") String markName, @Param("debtor") String debtor, @Param("phone") String phone, @Param("state") String state, @Param("mortgageType") String mortgageType, @Param("page") Integer page, @Param("size") Integer size,@Param("position") String pos);

    /**
     * 以上条件下的总条目数
     * @param markName
     * @param debtor
     * @param phone
     * @param state
     * @param mortgageType
     * @return
     */
    public Integer findAllLikeCount(@Param("markName") String markName, @Param("debtor") String debtor, @Param("phone") String phone, @Param("state") String state, @Param("mortgageType") String mortgageType,@Param("position") String pos);

    /**
     *廖泓宇
     * 接口13 中标管理的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageZB(String legalName, String phone, Integer page, Integer size);

    void updateShelfTime();

    /**
     *廖泓宇
     * 接口13.1 count
     */
    Integer findAllLikeByPageZBCount(String legalName, String phone);
    /**
     *廖泓宇
     * 接口15 满标复审包含模糊的全查询接口（返回字段不同）的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageFS(String legalName, String phone,Boolean progress,Integer page, Integer size);

    /**
     *廖泓宇
     * 接口15.1 count
     */
    Integer findAllLikeByPageFSCount(String legalName, String phone,Boolean progress);
    /**
     *廖泓宇
     * 接口17 所有结款标包含模糊的全查询接口（返回字段不同）的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageAJ(String legalName, String phone,Integer page, Integer size,String state1,String state2,String state3,String state4,String state5,String state6,String state7,String state8,String state9,String state10);
    List<MarkBrrowUserVo> findAllLikeByPageAJVo(String legalName, String phone,  String state1, String state2, String state3, String state4, String state5, String state6, String state7, String state8, String state9, String state10);

    /**
     *廖泓宇
     * 接口17.1 count
     */
    Integer findAllLikeByPageAJCount(String legalName, String phone,String state1,String state2,String state3,String state4,String state5,String state6,String state7,String state8,String state9,String state10);

    /**
     *廖泓宇
     * 中标修改
     */
    void updateZB(Mark mark);

    /**
     *廖泓宇
     * 类别修改
     */
    void updateMarkClass(Markclass markclass);

    /**
     * 根据id查询标的全部信息
     * 杨述波
     * @param id
     * @return
     */
    public Mark findById(Long id);

    /**
     * 标的删除
     * 杨述波
     * @param id
     */
    public void deleteById(Long id);


    /**
     * 标的初审核
     * 杨述波
     * @param id
     * @param state
     */
    public void checkFirstById(@Param("id") Long id,@Param("state") String state,@Param("reason") String reason,@Param("checkTime") Timestamp checkTime);


    /**
     * 标的维护时 信息填充
     * @param mark
     */
    public void fillById(Mark mark);


    /**
     *廖泓宇
     * 接口14 标的下架接口流标
     */
    void ceMark(Long id,String remarks3);

    /**
     *廖泓宇
     * 接口16 标的复审接口
     */
    void DoubleExamMark(Long id,String state,String remarks2,Timestamp checkBTime);

    /**
     *廖泓宇
     * 接口18 投资记录表模糊查询
     */
    List<Investrecord> findAllLikeByPageTZ(String phone, String name, Timestamp from, Timestamp to, Integer page, Integer size, String state1, String state2, String state3, String state4, String state5, String state6);

    List<Investrecord> findAllLikeByPageTZExport(String phone, String name, Timestamp from, Timestamp to, String state1, String state2, String state3, String state4, String state5, String state6);

    /**
     *廖泓宇
     * 接口18.1 count
     */
    Integer findAllLikeByPageTZCount(String phone, String name, Timestamp from, Timestamp to, String state1, String state2, String state3, String state4, String state5, String state6);

    /**
     * 查询昨日借款总额
     * @param start
     * @param end
     * @return
     */
    Double findNewBorrowYesterday(@Param("start") Timestamp start,@Param("end") Timestamp end);

    /**
     * 所有借款总额
     * @return
     */
    Double findAllBorrow();

    /**
     * 根据状态统计标的数目
     * @param state
     * @return
     */
    Integer countByState(String state);

    List<Mark> findByState(String state);


    //写在mark里面的提现记录统计，为了不干扰其他人的代码，用于首页统计
    Integer findRecordByState(String state);

    //迂回战术
    List<Outrecord> findByStateToRecord(String state);



    Double findInvestFromTo(@Param("start")Timestamp start,@Param("end") Timestamp end);

    /**
     * 根据借款方id查询借款用户信息，写在此处为了防止冲突
     * @param id
     * @return
     */
    Borrowuser findBorrowById(Long id);

    /**
     *     写再mark里的协议根据name检索
     */
    com.gxa.p2p.pojo.Param findParamByName(String name);

}
